#pragma once
#include <boost/noncopyable.hpp>
#include "WeaponFwd.hpp"
#include "LookDirection.hpp"

namespace Ogre
{
	class Entity;
} /*Ogre*/

namespace he
{
	class TerrainTile;

	//! Base class for all units.
	class Unit : boost::noncopyable
	{

		// Attributes
	private:
		//! Name/Description.
		std::string const m_Name;
		//! Terrain which unit occupies, actual position.
		TerrainTile const *m_pTile;
		//! Look direction.
		LookDirection m_LookDirection;

		// Operations
	public:
		//! Get position.
		TerrainTile const *position() const;
		//! Set position.
		void position(TerrainTile const *pTile);
		//! Look direction.
		LookDirection look_direction() const;
				
		// Construction/Destruction
	public:
		Unit(std::string const &Name, TerrainTile const *pTile, LookDirection LookDirection_);
		virtual ~Unit() = 0;
	};

	inline Unit::~Unit()
	{
	}
} /*he*/
